package com.shinbada.modules.sys.mapper;

import com.shinbada.core.persistence.TreeMapper;
import com.shinbada.modules.sys.entity.Menu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 菜单MAPPER接口
 *
 * @author initcap
 * @version 2017-05-16
 */
@Mapper
@Repository
public interface MenuMapper extends TreeMapper<Menu> {

    /**
     * 根据用户编号获取用户所拥有的菜单
     *
     * @param menu 菜单
     * @return 集合
     */
    List<Menu> findByUserId(Menu menu);

    /**
     * 删除菜单角色
     *
     * @param menu_id 菜单编号
     */
    void deleteMenuRole(@Param("menu_id") String menu_id);

    /**
     * 删除菜单数据权限规则
     *
     * @param menu_id 菜单编号
     */
    void deleteMenuDataRule(@Param("menu_id") String menu_id);

    /**
     * 查询所有的菜单权限
     *
     * @param menu 菜单
     * @return 集合
     */
    List<Menu> findAllDataRuleList(Menu menu);

    /**
     * 查询所有菜单编号相关的菜单角色
     *
     * @param id 菜单编号
     * @return 集合
     */
    List<String> listRoleMenuIdListByMenuId(String id);

    /**
     * 查询所有菜单编号相关的菜单数据权限
     *
     * @param id 菜单编号
     * @return 集合
     */
    List<String> listDataRuleMenuIdListByMenuId(String id);
}
